home *** CD-ROM | disk | FTP | other *** search
/ Merciful 5 / Merciful - Disc 5.iso / software / p / pcqpascalv1.2d.lha / Examples2 / DOSDemos / ExAll.p next >
Text File  |  1997-05-06  |  1KB  |  56 lines

  1. Program ExAllDemo;
  2.  
  3. { ExAllDemo by Andreas Tetzl }
  4. { Public Domain }
  5.  
  6. {$I "Include:Exec/Memory.i"}
  7. {$I "Dos.i"}
  8.  
  9. CONST BufferSize = 2048;
  10.  
  11. VAR ed,p,ed2 : ExAllDataPtr;
  12.     eac : ExAllControlPtr;
  13.     datei : FileLock;
  14.     n, res : Integer;
  15.     more : Boolean;
  16.  
  17. PROCEDURE CleanExit(Why : String; RC : Integer);
  18. BEGIN
  19.  IF eac<>NIL THEN FreeDosObject(DOS_EXALLCONTROL,eac);
  20.  IF ed<>NIL THEN FreeMem(ed,BufferSize);
  21.  IF datei<>NIL THEN UnLock(datei);
  22.  IF why<>NIL THEN Writeln(Why);
  23.  Exit(RC);
  24. END;
  25.  
  26.  
  27. BEGIN
  28.  Writeln("ExAllDemo\nVerzeichnis Sys:\n");
  29.  
  30.  eac:=AllocDosObject(DOS_EXALLCONTROL,NIL);
  31.  IF eac=NIL THEN CleanExit("Fehler bei AllocDosObject",10);
  32.  
  33.  ed:=AllocMem(BufferSize,0);
  34.  IF ed=NIL THEN CleanExit("Nicht genug Speicher",10);
  35.  eac^.eac_LastKey:=0;
  36.  eac^.eac_MatchString:=NIL;
  37.  eac^.eac_MatchFunc:=NIL;
  38.  datei:=Lock("sys:",SHARED_LOCK);
  39.  IF datei=NIL THEN CleanExit("Kein Lock auf Sys:",10);
  40.  
  41.  REPEAT
  42.   more:=ExAll(datei,ed,BufferSize,ED_SIZE,eac);
  43.   res:=IoErr;
  44.   p:=ed;
  45.   For n:=1 to eac^.eac_Entries do
  46.    BEGIN
  47.     Write(p^.ed_Name);
  48.     IF p^.ed_Type>=0 THEN Writeln("(dir)":40) else Writeln(p^.ed_Size:40);
  49.     p:=p^.ed_Next;
  50.    END;
  51.  UNTIL (More=FALSE) AND (res=ERROR_NO_MORE_ENTRIES);
  52.  
  53.  CleanExit(NIL,0);
  54. END.
  55.  
  56.